<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
    <PythonExport
        Name="GeometrySurfacePy"
        Namespace="Part"
        Twin="GeomSurface"
        TwinPointer="GeomSurface"
        PythonName="Part.GeometrySurface"
        FatherInclude="Mod/Part/App/GeometryPy.h"
        Include="Mod/Part/App/Geometry.h"
        Father="GeometryPy"
        FatherNamespace="Part"
        Constructor="true">
        <Documentation>
            <Author Licence="LGPL" Name="Werner Mayer" EMail="wmayer@users.sourceforge.net"/>
            <UserDocu>The abstract class GeometrySurface is the root class of all surface objects.</UserDocu>
        </Documentation>
        <Methode Name="toShape" Const="true">
            <Documentation>
                <UserDocu>Return the shape for the geometry.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="toShell" Const="true" Keyword="true">
            <Documentation>
                <UserDocu>Make a shell of the surface.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getD0" Const="true">
            <Documentation>
                <UserDocu>Returns the point of given parameter</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getDN" Const="true">
            <Documentation>
                <UserDocu>Returns the n-th derivative</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="value" Const="true">
            <Documentation>
                <UserDocu>value(u,v) -&gt; Point
Computes the point of parameter (u,v) on this surface</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="tangent" Const="true">
            <Documentation>
                <UserDocu>tangent(u,v) -&gt; (Vector,Vector)
Computes the tangent of parameter (u,v) on this geometry</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="normal" Const="true">
            <Documentation>
                <UserDocu>normal(u,v) -&gt; Vector
Computes the normal of parameter (u,v) on this geometry</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="projectPoint" Const="true" Keyword="true">
            <Documentation>
                <UserDocu>Computes the projection of a point on the surface

projectPoint(Point=Vector,[Method=&quot;NearestPoint&quot;])
projectPoint(Vector,&quot;NearestPoint&quot;) -&gt; Vector
projectPoint(Vector,&quot;LowerDistance&quot;) -&gt; float
projectPoint(Vector,&quot;LowerDistanceParameters&quot;) -&gt; tuple of floats (u,v)
projectPoint(Vector,&quot;Distance&quot;) -&gt; list of floats
projectPoint(Vector,&quot;Parameters&quot;) -&gt; list of tuples of floats
projectPoint(Vector,&quot;Point&quot;) -&gt; list of points</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="isUmbillic" Const="true">
            <Documentation>
                <UserDocu>isUmbillic(u,v) -&gt; bool
Check if the geometry on parameter is an umbillic point,
i.e. maximum and minimum curvature are equal.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="curvature" Const="true">
            <Documentation>
                <UserDocu>curvature(u,v,type) -&gt; float
The value of type must be one of this: Max, Min, Mean or Gauss
Computes the curvature of parameter (u,v) on this geometry</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="curvatureDirections" Const="true">
            <Documentation>
                <UserDocu>curvatureDirections(u,v) -&gt; (Vector,Vector)
Computes the directions of maximum and minimum curvature
of parameter (u,v) on this geometry.
The first vector corresponds to the maximum curvature,
the second vector corresponds to the minimum curvature.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="bounds" Const="true">
            <Documentation>
                <UserDocu>Returns the parametric bounds (U1, U2, V1, V2) of this trimmed surface.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="isPlanar" Const="true">
            <Documentation>
                <UserDocu>isPlanar([float]) -&gt; Bool
Checks if the surface is planar within a certain tolerance.</UserDocu>
            </Documentation>
        </Methode>
        <Attribute Name="Continuity" ReadOnly="true">
            <Documentation>
                <UserDocu>Returns the global continuity of the surface.</UserDocu>
            </Documentation>
            <Parameter Name="Continuity" Type="String"/>
        </Attribute>
        <Attribute Name="Rotation" ReadOnly="true">
            <Documentation>
                <UserDocu>Returns a rotation object to describe the orientation for surface that supports it</UserDocu>
            </Documentation>
            <Parameter Name="Rotation" Type="Object"/>
        </Attribute>
        <Methode Name="uIso" Const="true">
            <Documentation>
                <UserDocu>Builds the U isoparametric curve</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="vIso" Const="true">
            <Documentation>
                <UserDocu>Builds the V isoparametric curve</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="isUPeriodic" Const="true">
            <Documentation>
                <UserDocu>Returns true if this patch is periodic in the given parametric direction.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="isVPeriodic" Const="true">
            <Documentation>
                <UserDocu>Returns true if this patch is periodic in the given parametric direction.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="isUClosed" Const="true">
            <Documentation>
                <UserDocu>Checks if this surface is closed in the u parametric direction.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="isVClosed" Const="true">
            <Documentation>
                <UserDocu>Checks if this surface is closed in the v parametric direction.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="UPeriod" Const="true">
            <Documentation>
                <UserDocu>Returns the period of this patch in the u parametric direction.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="VPeriod" Const="true">
            <Documentation>
                <UserDocu>Returns the period of this patch in the v parametric direction.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="parameter" Const="true">
            <Documentation>
                <UserDocu>Returns the parameter on the curve
of the nearest orthogonal projection of the point.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="toBSpline" Const="true" Keyword="true">
            <Documentation>
                <UserDocu>Returns a B-Spline representation of this surface.
                    The optional arguments are:
                    * tolerance (default=1e-7)
                    * continuity in u (as string e.g. C0, G0, G1, C1, G2, C3, CN) (default='C1')
                    * continuity in v (as string e.g. C0, G0, G1, C1, G2, C3, CN) (default='C1')
                    * maximum degree in u (default=25)
                    * maximum degree in v (default=25)
                    * maximum number of segments (default=1000)
                    * precision code (default=0)
                    Will raise an exception if surface is infinite in U or V (like planes, cones or cylinders)</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="intersect" Const="true">
            <Documentation>
                <UserDocu>Returns all intersection points/curves between the surface and the curve/surface.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="intersectSS" Const="true">
            <Documentation>
                <UserDocu>Returns all intersection curves of this surface and the given surface.
The required arguments are:
* Second surface
* precision code (optional, default=0)</UserDocu>
            </Documentation>
        </Methode>
    </PythonExport>
</GenerateModel>
